package priv.tuyou.system.controller;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import priv.tuyou.bo.AppData;
import priv.tuyou.bo.ZtreeNode;
import priv.tuyou.dao.IDao;
import priv.tuyou.exception.ServiceException;
import priv.tuyou.system.dao.ISystemMenuDao;
import priv.tuyou.system.po.SystemMenu;
import priv.tuyou.system.service.ISystemMenuService;

/**
 * 系统菜单请求控制器
 * @author：涂有
 * @date 2016年12月21日 上午12:35:04
 */
@Controller
@RequestMapping("/menu")
public class SystemMenuController {
	
	@Resource
	protected ISystemMenuService service;
	
	@Resource
	protected IDao dao;
	@Resource
	protected ISystemMenuDao systemMenuDao;

	/**
	 * 进入菜单新增页面
	 * @date 2016年12月21日 上午12:34:11
	 * @param id
	 * @return
	 * @throws
	 */
	@RequestMapping(value="/add", method=RequestMethod.GET)
	public ModelAndView addPage(Long parent_id){
		
		ModelAndView mv = new ModelAndView("WEB-INF/jsp/manager/systemMenu/add");
		if(parent_id != null){
			
			SystemMenu menu = dao.get(SystemMenu.class, parent_id);
			mv.addObject("parent", menu);
		}
		return mv;
	}
	
	/**
	 * 进入菜单编辑页面
	 * @date 2016年12月21日 上午12:34:11
	 * @param id
	 * @return
	 * @throws
	 */
	@RequestMapping(value="/edit", method=RequestMethod.GET)
	public ModelAndView editPage(Long id){
		
		ModelAndView mv = new ModelAndView("WEB-INF/jsp/manager/systemMenu/add");
		if(id != null){
			
			SystemMenu menu = dao.get(SystemMenu.class, id);
			mv.addObject("menu", menu);
			if(menu.getParent_id() != null){
				
				mv.addObject("parent", dao.get(SystemMenu.class, menu.getParent_id()));
			}
		}
		return mv;
	}
	
	/**
	 * 进入菜单管理页面
	 * @date 2016年12月21日 上午12:34:11
	 * @param id
	 * @return
	 * @throws
	 */
	@RequestMapping(value="/manage", method=RequestMethod.GET)
	public ModelAndView managePage(){
		
		ModelAndView mv = new ModelAndView("WEB-INF/jsp/manager/systemMenu/manage");
		return mv;
	}
	
	/**
	 * 新增菜单
	 * @date 2016年12月21日 下午9:42:56
	 * @param parent_id
	 * @param name
	 * @param url
	 * @param icon
	 * @param orderValue
	 * @return
	 * @throws ServiceException
	 */
	@RequestMapping(value="/add", method=RequestMethod.POST)
	@ResponseBody
	public AppData add(Long parent_id, String name, String url, String icon, int orderValue) throws ServiceException{
		
		service.add(parent_id, name, url, icon, orderValue);
		return new AppData(1, "新增成功", null);
	}
	
	/**
	 * 编辑菜单
	 * @date 2016年12月21日 上午12:34:52
	 * @param id
	 * @param parent_id
	 * @param name
	 * @param url
	 * @param orderValue
	 * @return
	 * @throws ServiceException 
	 */
	@RequestMapping(value="/edit", method=RequestMethod.POST)
	@ResponseBody
	public AppData edit(Long id, Long parent_id, String name, String url, String icon, int orderValue) throws ServiceException{
		
		service.update(id, parent_id, name, url, icon, orderValue);
		return new AppData(1, "编辑成功", null);
	}
	
	
	@RequestMapping(value="/delete")
	public String delete(Long id){
		
		dao.delete(SystemMenu.class, id);
		return "redirect:/menu/manage.action";
	}
	
	/**
	 * 得到一层节点
	 * @date 2016年12月21日 上午12:51:30
	 * @return
	 */
	@RequestMapping("getHierarchy")
	@ResponseBody
	public List<ZtreeNode> getHierarchy(Long id){
		
		List<ZtreeNode> menus = service.getHierarchy(id);
		return menus;
	}
	
	/**
	 * 加载系统左侧菜单
	 * @date 2016年12月22日 上午12:53:33
	 * @return
	 */
	public ModelAndView loadMenu(){
		
		return null;
	}
}
